/**
 * Created by JetBrains PhpStorm.
 * User: taoqili
 * Date: 12-1-30
 * Time: 下午12:50
 * To change this template use File | Settings | File Templates.
 */

var wordImage = {}
// (function(){
var g = baidu.g,
  flashObj, flashContainer

wordImage.init = function (opt, callbacks) {
  showLocalPath('localPath')
  // createCopyButton("clipboard","localPath");
  createFlashUploader(opt, callbacks)
  addUploadListener()
  addOkListener()
}

function hideFlash () {
  flashObj = null
  flashContainer.innerHTML = ''
}
function addOkListener () {
  dialog.onok = function () {
    if (!imageUrls.length) return
    var urlPrefix = editor.getOpt('imageUrlPrefix'),
      images = domUtils.getElementsByTagName(editor.document, 'img')
    editor.fireEvent('saveScene')
    for (var i = 0, img; img = images[i++];) {
      var src = img.getAttribute('word_img')
      if (!src) continue
      for (var j = 0, url; url = imageUrls[j++];) {
        if (src.indexOf(url.original.replace(' ', '')) != -1) {
          img.src = urlPrefix + url.url
          img.setAttribute('_src', urlPrefix + url.url) // 同时修改"_src"属性
          img.setAttribute('title', url.title)
          domUtils.removeAttributes(img, ['word_img', 'style', 'width', 'height'])
          editor.fireEvent('selectionchange')
          break
        }
      }
    }
    editor.fireEvent('saveScene')
    hideFlash()
  }
  dialog.oncancel = function () {
    hideFlash()
  }
}

/**
 * 绑定开始上传事件
 */
function addUploadListener () {
  g('upload').onclick = function () {
    flashObj.upload()
    this.style.display = 'none'
  }
}

function showLocalPath (id) {
  // 单张编辑
  var img = editor.selection.getRange().getClosedNode()
  var images = editor.execCommand('wordimage')
  if (images.length == 1 || img && img.tagName == 'IMG') {
    g(id).value = images[0]
    return
  }
  var path = images[0]
  var leftSlashIndex = path.lastIndexOf('/') || 0, // 不同版本的doc和浏览器都可能影响到这个符号，故直接判断两种
    rightSlashIndex = path.lastIndexOf('\\') || 0,
    separater = leftSlashIndex > rightSlashIndex ? '/' : '\\'

  path = path.substring(0, path.lastIndexOf(separater) + 1)
  g(id).value = path
}

function createFlashUploader (opt, callbacks) {
  // 由于lang.flashI18n是静态属性，不可以直接进行修改，否则会影响到后续内容
  var i18n = utils.extend({}, lang.flashI18n)
  // 处理图片资源地址的编码，补全等问题
  for (var i in i18n) {
    if (!(i in {'lang': 1, 'uploadingTF': 1, 'imageTF': 1, 'textEncoding': 1}) && i18n[i]) {
      i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + '/images/' + i18n[i])
    }
  }
  opt = utils.extend(opt, i18n, false)
  var option = {
    createOptions: {
      id: 'flash',
      url: opt.flashUrl,
      width: opt.width,
      height: opt.height,
      errorMessage: lang.flashError,
      wmode: browser.safari ? 'transparent' : 'window',
      ver: '10.0.0',
      vars: opt,
      container: opt.container
    }
  }

  option = extendProperty(callbacks, option)
  flashObj = new baidu.flash.imageUploader(option)
  flashContainer = $G(opt.container)
}

function extendProperty (fromObj, toObj) {
  for (var i in fromObj) {
    if (!toObj[i]) {
      toObj[i] = fromObj[i]
    }
  }
  return toObj
}

// })();

function getPasteData (id) {
  baidu.g('msg').innerHTML = lang.copySuccess + '</br>'
  setTimeout(function () {
    baidu.g('msg').innerHTML = ''
  }, 5000)
  return baidu.g(id).value
}

function createCopyButton (id, dataFrom) {
  baidu.swf.create({
    id: 'copyFlash',
    url: 'fClipboard_ueditor.swf',
    width: '58',
    height: '25',
    errorMessage: '',
    bgColor: '#CBCBCB',
    wmode: 'transparent',
    ver: '10.0.0',
    vars: {
      tid: dataFrom
    }
  }, id
  )

  var clipboard = baidu.swf.getMovie('copyFlash')
  var clipinterval = setInterval(function () {
    if (clipboard && clipboard.flashInit) {
      clearInterval(clipinterval)
      clipboard.setHandCursor(true)
      clipboard.setContentFuncName('getPasteData')
      // clipboard.setMEFuncName("mouseEventHandler");
    }
  }, 500)
}
createCopyButton('clipboard', 'localPath')
